package vapor.aquila.client.game;

import vapor.aquila.client.ui.*;
import com.google.gwt.user.client.ui.*;

/**
 * Terrain is the very root of a map tile - it is what everything is piled on
 * top of and everyone is standing on. 
 * 
 * @author Travis Gockel
 */
public enum Terrain
{
	/*			Move	Defense	Food	Shield	Trade	Image to Display*/
	Desert	(	1,		1.0f,	0,		1,		0,		ImageFactory.sand()),
	Plains	(	1,		1.0f,	1,		1,		0,		ImageFactory.patchyGrass()),
	Grass	(	1,		1.0f,	2,		1,		0,		ImageFactory.grass()),
	Forest	(	2,		1.5f,	1,		2,		0,		ImageFactory.forest()),
	Hills	(	2,		2.0f,	1,		0,		0,		ImageFactory.gravel()),
	Mountain(	2,		2.0f,	1,		0,		0,		ImageFactory.rocks()),
	Tundra	(	1,		1.0f,	1,		0,		0,		ImageFactory.dirt()),
	Glacier	(	2,		1.0f,	0,		0,		0,		ImageFactory.snow()),
	Swamp	(	2,		1.5f,	1,		0,		0,		ImageFactory.moss()),
	Jungle	(	2,		1.5f,	1,		0,		0,		ImageFactory.weeds()),
	Ocean	(	1,		1.0f,	1,		0,		2,		ImageFactory.water())
	;
	
	private int moveCost, foodProduction, shieldProduction, tradeProduction;
	private float defenseMultiplier;
	private AbstractImagePrototype image;
	
	Terrain(int moveCost, float defense, int food, int shields, int trade, AbstractImagePrototype image)
	{
		this.moveCost = moveCost;
		this.defenseMultiplier = defense;
		this.foodProduction = food;
		this.shieldProduction = shields;
		this.tradeProduction = trade;
		this.image = image;
	}
	
	public int getMoveCost() { return moveCost; }
	public int getFoodProduction() { return foodProduction; }
	public int getShieldProduction() { return shieldProduction; }
	public int getTradeProduction() { return tradeProduction; }
	public float getDefenseMultiplier() { return defenseMultiplier; }
	public AbstractImagePrototype getImagePrototype() { return image; }
}